home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / General / ViewIt™ 2.24 Shareware / C++ Demo Projects / Metrowerks C++ 1.0a4 Demos / vDemoMC+.cp < prev    next >
Text File  |  1994-03-27  |  4KB  |  127 lines

  1. /* ViewIt 2.2 Demonstration Program */
  2. /* ©FaceWare 1991-94.  All Rights Reserved. */
  3.  
  4. #include "string.h"
  5. #include "FaceStorMC+.h"
  6. extern struct FaceRec fRec;
  7. pascal void OverProc(Ptr thePtr);
  8.  
  9. short helpShown;
  10. struct {
  11.     short        myInteger;
  12.     float        myReal;
  13.     char        myString[100];
  14.     long        myFlags;
  15.     } myRec;
  16. short myList;
  17. long oldTicks,newTicks,theProcPtr;
  18. float theReal,delta;
  19.  
  20. #ifndef powerc
  21. pascal void fJumpIt(Ptr thePtr) = {0x2257,0x2051,0x4E90};
  22. #endif
  23.  
  24. pascal void OverProc(Ptr thePtr) {
  25.     if (fRec.uCommand == 264)            /* a key down message? */
  26.         if (fRec.uParam[0] == 32)        /* SPACE key pressed? */
  27.             fRec.uParam[0] = 95;            /* convert to UNDERLINE */
  28. #ifdef powerc
  29.     CallUniversalProc(*(UniversalProcPtr*)thePtr,192,thePtr);
  30. #else
  31.     fJumpIt(thePtr);                            /* pass message to driver */
  32. #endif
  33.     }
  34.  
  35. void main()
  36. {
  37.     myRec.myInteger = 0;
  38.     myRec.myReal = 6.2;
  39.     strcpy(myRec.myString,"Hello");
  40.     myRec.myFlags = 10;
  41.     myList = 2;
  42.     oldTicks = 0;
  43.     theReal = 6.0;
  44. #ifdef powerc
  45.     theProcPtr = (long)NewRoutineDescriptor((ProcPtr)OverProc,192,1);
  46. #else
  47.     theProcPtr = (long)OverProc;
  48. #endif
  49.  
  50. /* Initialize FaceIt */
  51.     strcpy(fRec.uName, "vDemo.Rsrc");
  52.     FaceIt(0,DoInit);
  53.  
  54. /* Open Modeless Window using FWND 1000 */
  55.     FaceIt(0,NewWnd,1000,1);
  56.  
  57.     for (;;) {
  58.         FaceIt(0,DoLoop);
  59. /* Standard "About" Menu Item Selection */
  60.         if ((fRec.uMenuID == 101L) && (fRec.uMenuItem == 1L)) {
  61.             strcpy(fRec.uString, "Demonstration of the use of ViewIt\rwindows in a FaceIt-based program.");
  62.             FaceIt(0,ShoStr,3,12,(1L + (409L * 65536L)));
  63.             }
  64. /* Hit in Modeless Window's "Open Modal" Button */
  65.         else if ((fRec.uMenuID == 1000L) && (fRec.wcHit == 2L)) {
  66.             FaceIt(0,NewWnd,1001);        /* Open Modal Window */
  67.             for (;;) {
  68.                 FaceIt(0,MdlWnd,1001);    /* Process Modal Events */
  69.                 if (fRec.wcHit == -1L)                        /* Hit in Close Box */
  70.                     break;
  71.                 else if (fRec.wcHit == 1L) {            /* Hit in "Open Nested" Button */
  72.                     FaceIt(0,NewWnd,1002,0,0,(long)&myRec);    /* Open Nested Modal */
  73.                     FaceIt(0,GetCtl,1002,0,3,3);                        /* Link Scrollable List */
  74.                     FaceIt(0,LnkCtl,(long)fRec.cControl,(long)&myList,2L);
  75.                     FaceIt(0,GetCtl,1002,0,2,3);                        /* Set Override Proc */
  76.                     FaceIt(0,OvrCtl,(long)fRec.cControl,theProcPtr);
  77.                     FaceIt(0,SetVal,1002);                                    /* Set Linked Values */
  78.                     helpShown = false;
  79.                     for (;;) {
  80.                         FaceIt(0,MdlWnd,1002,-2);                            /* Process Modal Events */
  81.                         if (fRec.uMenuID == 0L) {                                    /* No Message */
  82.                             newTicks = TickCount();
  83.                             if (newTicks > oldTicks + 60) {
  84.                                 oldTicks = newTicks;
  85.                                 FaceIt(0,GetCtl,1002,0,2,8);
  86.                                 SetCtlValue(fRec.cControl,(fRec.cValue % 4) + 1);
  87.                                 }
  88.                             }
  89.                         else if (fRec.wvHit == 1L) {                            /* Hit in View #1 */
  90.                             if (fRec.wcHit == 1L)                                        /* Hit in "OK" Button */
  91.                                 break;
  92.                             else if (fRec.wcHit == 2L) {                        /* Hit in "Show/Hide" */
  93.                                 if (helpShown == true) {
  94.                                     FaceIt(0,ShoCtl,0,0,-3,2);                    /* Hide v3, Show v2 */
  95.                                     helpShown = false;}
  96.                                 else {
  97.                                     FaceIt(0,ShoCtl,0,0,-2,3);                    /* Hide v2, Show v3 */
  98.                                     helpShown = true;}
  99.                                 }
  100.                             }
  101.                         else if (fRec.wvHit == 2L)                                /* Hit in View #2 */
  102.                             if ((fRec.wcHit == 6L)||(fRec.wcHit == 7L)) { /* Up/Down Arrow */
  103.                                 FaceIt(0,GetCtl,1002,0,2,(long)fRec.wcHit);
  104.                                 delta = 0.001 * (fRec.cMin - 2);
  105.                                 myRec.myReal = myRec.myReal + delta;
  106.                                 FaceIt(0,SetVal,1002,0,2,2);
  107.                                 Delay(5,&fRec.uI4);
  108.                                 }
  109.                         }
  110.                     FaceIt(0,GetVal,1002);                        /* Get Linked Values */
  111.                     FaceIt(0,EndWnd,1002);                        /* Close Nested Modal */
  112.                     }
  113.                 }
  114.             FaceIt(0,EndWnd,1001);        /* Close Modal Window */
  115.           }
  116. /* Hit in Modeless Window's "Why ViewIt?" Button */
  117.         else if ((fRec.uMenuID == 1000L) && (fRec.wcHit == 3L)) {
  118.             FaceIt(0,NewWnd,1003,0,0,(long)&theReal);
  119.             FaceIt(0,SetVal,1003);
  120.             for (;;) {
  121.                 FaceIt(0,MdlWnd,1003);
  122.                 if (fRec.wcHit == 1L) break;}
  123.             FaceIt(0,GetVal,1003);
  124.             FaceIt(0,EndWnd,1003);
  125.             }
  126.         }
  127. }